package com.ice.chatserver.service;

import com.ice.chatserver.common.R;
import com.ice.chatserver.pojo.User;
import com.ice.chatserver.pojo.vo.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author ice2020x
* @Date: 2023/2/4
* @Description: 用户操作
**/
public interface UserService {
    /**
     * 注册
     *
     * @param rVo  注册的请求参数
     * @return  r
     */
    R register(RegisterRequestVo rVo);

    /**
     * 获取验证码
     *
     * @param request request
     * @param response response
     * @return r
     */
    R getVerificationCode(HttpServletRequest request, HttpServletResponse response);

    /**
     * 获取用户消息
     *
     * @param userId  用户id
     * @param request request
     * @return  r
     */
    R getUserInfo(String userId, HttpServletRequest request);

    /**
     * 添加分组
     *
     * @param requestVo  参数
     * @return  r
     */
    R addNewFenZu(NewFenZuRequestVo requestVo);

    /**
     * 修改用户备注
     *
     * @param requestVo  参数
     * @param userId  用户id
     * @return  r
     */
    R modifyFriendBeiZhu(ModifyFriendBeiZhuRequestVo requestVo, String userId);
    /**
     * 修改好友分组
     *
     * @param requestVo  参数
     * @return  请求结果
     */
    R modifyFriendFenZu(ModifyFriendFenZuRequestVo requestVo);
    
    R deleteFenZu(DelFenZuRequestVo requestVo);
    /**
     * 修改分组名
     *
     * @param requestVo  参数
     * @return  请求结果
     */
    R editFenZu(EditFenZuRequestVo requestVo);
    
    void updateOnlineTime(long onlineTime, String uid);
    /**
     * 修改用户的个性化设置
     *
     * @param requestVo  参数
     * @param userId  userId
     * @return  请求结果
     */
    boolean updateUserConfigure(UpdateUserConfigureRequestVo requestVo, String userId);
    /**
     * 更新用户信息
     *
     * @param requestVo 参数
     * @return 请求结果
     */
    Map<String, Object> updateUserInfo(UpdateUserInfoRequestVo requestVo);
    
    Map<String, Object> updateUserPwd(UpdateUserPwdRequestVo requestVo);
    
    List<User> getUserList();
    
    List<User> getUsersBySignUpTime(String lt, String rt);
    
    void changeUserStatus(String uid, Integer status);
    
    HashMap<String, Object> searchUser(SearchRequestVo requestVo, String userId);
}
